import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#一、创建图像：3是代表3个通道：bgr
img=np.zeros([512,512,3],np.uint8)
#二、绘制图形
#1.直线(绘制到哪个图像上，起点坐标，终点坐标，颜色，线的粗细)
cv.line(img,(0,0),(511,511),(255,0,0),5)
#2.绘制圆形(绘制到哪个图像上，圆心坐标,半径，颜色，线的粗细)
cv.circle(img,(256,400),60,(0,0,255),6)
#3.绘制矩形(绘制到哪个图像上，左上角坐标，右下角坐标，颜色，线条粗细)
cv.rectangle(img,(100,100),(400,400),(0,255,0),7)
#4.图像上写字(绘制到哪个图像上，坐标,字体，字号，颜色，粗细),函数不支持中文
cv.putText(img,"hello world!!",(0,150),cv.FONT_HERSHEY_COMPLEX
           ,5,(255,255,255),3)
#5.补充1： 绘制椭圆(绘制到哪个图像上，圆心坐标,椭圆的两个半径,旋转角度,从哪个角度开始绘制,到哪个角度结束,颜色,线的粗细)
cv.ellipse(img,(256,400),(200,100),0,120,360,(255,255,30),30)

#6.补充2：绘制任意多边形
pts=np.array([(300,10),(150,100),(450,100)],np.int32) #三角形的三个坐标点，必须类型是int32
# 多边形(绘制到哪个图像上，各个坐标点,是否闭合图形,颜色,线的粗细)
cv.polylines(img,[pts],False,(0,255,255),10)
#填充多边形：(绘制到哪个图像上，各个坐标点,填充颜色)
cv.fillPoly(img,[pts],(30,30,180))

#三、显示结果
plt.imshow(img[:,:,::-1])
plt.show()